// https://leetcode.cn/problems/remove-element/description/
// https://www.programmercarl.com/0027.%E7%A7%BB%E9%99%A4%E5%85%83%E7%B4%A0.html

// 快慢指针方法 不相同的时候重新赋值数组元素
// 快指针遍历完之后慢指针的的位置就是删除后的长度
// 但是数组长度只会停留在慢指针的位置 慢指针后面还存在没有继续处理的原数组的元素
const deleteNumbers = (arr, target) => {
  if (!Array.isArray(arr)) return;
  let slow = 0,
    fast = 0;
  while (fast < arr.length) {
    if (arr[fast] !== target) {
      arr[slow] = arr[fast];
      slow++;
    }
    fast++;
  }
  return slow;
};

const nums = [0, 1, 2, 2, 3, 0, 4, 2],
  val = 2;
console.log(deleteNumbers(nums, val));
console.log(nums);

